home *** CD-ROM | disk | FTP | other *** search
- /*
-
- PLASPAL.C - Written by Phil Inch for Game Developers Magazine (Issue 4)
- Contributed to the public domain.
-
- This program written and compiled with Borland C++ v3.1
- Compatibility with other compilers is not guaranteed.
-
- Usage of this program is subject to the disclaimer printed
- in the magazine. You assume all risks associated with the use
- of this program.
-
- */
-
-
- #include <stdio.h>
- #include <conio.h>
- #include <stdlib.h>
- #include <dos.h>
- #include <time.h>
- #include "vga.h"
-
- #define MAX_PALETTE 192
- #define MAX_X 319
- #define MAX_Y 199
-
- unsigned char palette[MAX_PALETTE][3];
-
- void set_palette(void) {
- unsigned char c;
-
- for ( c = 0; c < 64; c++ ) {
- palette[c][0] = c;
- palette[c][1] = 63-c;
- palette[c][2] = 0;
-
- palette[c+64][0] = 63-c;
- palette[c+64][1] = 0;
- palette[c+64][2] = c;
-
- palette[c+128][0] = 0;
- palette[c+128][1] = c;
- palette[c+128][2] = 63-c;
- }
- SetBlock( 1, &palette[0][0], MAX_PALETTE );
- }
-
- void draw_lines(void) {
- int c;
-
- for (c=1; c<=192; c++)
- VLine(c,0,199,c);
- }
-
- void main(int argc, char **argv) {
- int c;
- char c1, c2, c3, c4;
-
- SetGraphicsMode();
- set_palette();
- draw_lines();
-
- if (*argv[1]=='C')
- /* Cycle the palette until a key is pressed */
- while ( !kbhit() ) {
- c1 = palette[0][0];
- c2 = palette[0][1];
- c3 = palette[0][2];
- for ( c = 0; c < MAX_PALETTE-1; c++ ) {
- palette[c][0] = palette[c+1][0];
- palette[c][1] = palette[c+1][1];
- palette[c][2] = palette[c+1][2];
- }
- palette[MAX_PALETTE-1][0] = c1;
- palette[MAX_PALETTE-1][1] = c2;
- palette[MAX_PALETTE-1][2] = c3;
- SetBlock( 1, &palette[0][0], MAX_PALETTE );
- delay(10);
- }
- else getch();
-
- SetTextMode();
- }
-